# 輪替狀態機

## 描述

您可以使用輪替狀態機執行多組不同資料項目之間的比較分析，例如進行購物籃分析。一個狀態可以保留一組選項。

QlikView 開發人員可以在 QlikView 文件中建立多個狀態，並且將這些狀態套用至文件內的特定物件。使用者可以複製這些物件 (伺服器物件)，然後使這些物件進入不同的狀態。

分離和輪替狀態機兩者之間最大的差別在於，指定狀態中的所有物件將回應至使用者在該狀態中選取的選項。使用者在其他狀態中選取的選項不影響指定狀態中的物件。

載入指令碼中並無法存取輪替狀態機功能。

資訊備註輪替狀態機是 QlikView 開發人員啟用的功能，應該謹慎使用，以免造成使用者混淆，因為畫面不會自動指示該物件或運算式處於或參考輪替狀態。QlikView 開發人員可以使用 StateName() 函數，決定向使用者提供這些資訊。

資訊備註若資料位於區段存取或資料減少之下，則輪替狀態選項的視覺化可能會失敗。若使用者取用區段存取之下的 QlikView 文件時，無法存取資料，則輪替狀態選項無法視覺化。

## 設定輪替狀態機

進行下列作業，啟用並設定輪替狀態機：

1. 按一下輪替狀態機...，位於 文件屬性：一般標籤。  
   隨即會開啟輪替狀態機對話方塊。
2. 按一下新增...以建立多個狀態，並為這些狀態命名。這些名稱將做為狀態識別碼之用。
3. 按一下確定關閉對話方塊。

QlikView 開發人員現在可以從畫面物件建立新的輪替狀態機。

從 QlikView Server 存取 QlikView 文件的使用者可以使用輪替狀態機，但是無法建立輪替狀態機。

## 將狀態指派給物件

進行下列作業，將狀態指派給物件：

1. 開啟屬性對話方塊，並選取一般標籤。
2. 將輪替狀態機設定為要用於物件的狀態識別碼。

物件現在將獨立於文件的其他部份之外，無法加以選取，只有在將其他物件設定為相同的狀態，才能進行選取。

有兩個狀態一律可以使用：預設狀態和繼承。預設狀態是大部分使用 QlikView 時所處的狀態，而且以 $ 表示。QlikView 文件一律處於預設狀態。物件可以繼承較高層級物件的狀態，例如工作表和容器。這表示狀態的繼承順序是：文件 - 工作表 - 工作表物件。除非 QlikView 開發人員覆寫，否則工作表和工作表物件一律處於繼承狀態。

## 比較輪替狀態機

您可以比較同一個物件的兩個狀態。例如，您可以建立折線圖，並使用集合分析在運算式中指派狀態，以同一軸顯示資料的兩個狀態。

範例：

若您已定義狀態 Group1 及 Group2，您可以比較欄位的平均 Adj.Close用於群組，方法是在折線圖中顯示這兩個運算式：

`Avg({[Group1]} [Adj.Close])`

`Avg({[Group2]} [Adj.Close])`

## 使用輪替狀態機的邏輯行為

按清除按鈕將影響所有狀態。   
在 Internet Explorer 外掛程式中，有一個功能表項目已經新增到清除按鈕下拉式功能表，以便使用者清除選取的特定狀態。Ajax 用戶端沒有這個功能表，但是建立一個動作按鈕連接特定狀態的 [清除] 按鈕，也可達成相同的功能。

按返回和往前按鈕將影響所有狀態。特定狀態則沒有可以來回移動的機制。

按鎖定和解除鎖定按鈕將影響所有狀態。特定狀態無法使用這些按鈕鎖定和解除鎖定。可以在特定狀態中使用清單方塊的快顯功能表，以鎖定狀態中的特定欄位。

選項功能表中的功能表項目可套用至所有狀態。此功能表中沒有可以影響特定狀態的機制。

輪替狀態機可用於連結物件。狀態可套用至物件的所有執行個體。變更連結物件的狀態將使得其他連結物件進入相同的狀態。

資訊備註將在所有狀態中發出觸發程序。

可以在特定狀態中設定要發生的動作。一個已知例外是指執行巨集動作。其可以設定在特定狀態中執行，不過巨集會在所有狀態中發出。

使用遺失狀態 (開發人員已移除此狀態) 的物件，將會透過輪替狀態機下拉式清單還原為預設狀態，其中將顯示下列資訊：   
`AlternateStateName <unavailable>`。

資訊備註

您只能以狀態引數搭配輪替狀態機使用欄位函數。

[欄位函數](https://help.qlik.com/zh-TW/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/ChartFunctions/FieldFunctions/field-functions-charts.htm)

### 替代狀態中的變數

您可以指定要在展開變數時使用哪個狀態。變更特定狀態不會影響以另一個狀態展開的變數值。若您沒有指定狀態，會以預設狀態展開變數。

範例：

若您擁有名稱為 `MyState` 的狀態，以及名稱為 `vMyVar` 的變數：

* `$(vMyVar)` 以預設狀態展開變數。
* `$({MyState} vMyVar)` 以 `MyState` 狀態展開變數。

## 瞭解更多資訊

* [集合分析與集合運算式](https://help.qlik.com/zh-TW/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)